
package com.crowdfunding.circle.user.entity;

import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.crowdfunding.circle.sensitiveword.SensitiveWordUtils;

/**
 * 用户信息实体类
 *
 * @author 朱国军
 * @version 2016年06月26日 朱国军
 */
public class UserInfoVO {

    /** 用户ID */
    private String userId;

    /** 用户帐号 */
    private String userAccount;

    /** 用户密码(使用MD5加密) */
    private String userPassword;

    /** 用户昵称 */
    private String userName;

    /** 用户邮箱 */
    private String email;

    /** 用户手机号 */
    private String phone;

    /** 姓名 */
    private String name;

    /** 身份证号 */
    private String idCard;

    /** 性别 */
    private Integer sex;

    /** 出生日期 */
    private Date birthday;

    /** 籍贯 */
    private String nativePlace;

    /** 职业 */
    private Integer occupation;

    /** 微信号 */
    private String wechartNo;

    /** 用户头像Url */
    private String headImage;

    /** 用户介绍 */
    private String userIntroduction;

    /** 用户标签 */
    private String userLabel;

    /** 是否是收费拆解人 */
    private Integer isCharge;

    /** 创建时间 */
    private Date createTime;

    /** 更新时间 */
    private Date updateTime;
    
    /** 状态：0默认，1管理员删除，2用户删除 */
    private Integer dataStatus;

    /**
     * 设置用户ID
     *
     * @param userId 用户ID
     */
    public void setUserId(String userId) {
        this.userId = userId;
    }

    /**
     * 获取用户ID
     *
     * @return 用户ID
     */
    public String getUserId() {
        return userId;
    }

    /**
     * 设置用户帐号
     *
     * @param userAccount 用户帐号
     */
    public void setUserAccount(String userAccount) {
        this.userAccount = userAccount;
    }

    /**
     * 获取用户帐号
     *
     * @return 用户帐号
     */
    public String getUserAccount() {
        return userAccount;
    }

    /**
     * 设置用户密码(使用MD5加密)
     *
     * @param userPassword 用户密码(使用MD5加密)
     */
    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    /**
     * 获取用户密码(使用MD5加密)
     *
     * @return 用户密码(使用MD5加密)
     */
    public String getUserPassword() {
        return userPassword;
    }

    /**
     * 设置用户昵称
     *
     * @param userName 用户昵称
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * 获取用户昵称
     *
     * @return 用户昵称
     */
    public String getUserName() {
        return userName;
    }

    /**
     * 设置用户邮箱
     *
     * @param email 用户邮箱
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * 获取用户邮箱
     *
     * @return 用户邮箱
     */
    public String getEmail() {
        return email;
    }

    /**
     * 设置用户手机号
     *
     * @param phone 用户手机号
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /**
     * 获取用户手机号
     *
     * @return 用户手机号
     */
    public String getPhone() {
        return phone;
    }

    /**
     * 设置姓名
     *
     * @param name 姓名
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取姓名
     *
     * @return 姓名
     */
    public String getName() {
        return name;
    }

    /**
     * 设置身份证号
     *
     * @param idCard 身份证号
     */
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    /**
     * 获取身份证号
     *
     * @return 身份证号
     */
    public String getIdCard() {
        return idCard;
    }

    /**
     * 设置性别
     *
     * @param sex 性别
     */
    public void setSex(Integer sex) {
        this.sex = sex;
    }

    /**
     * 获取性别
     *
     * @return 性别
     */
    public Integer getSex() {
        return sex;
    }

    /**
     * 设置出生日期
     *
     * @param birthday 出生日期
     */
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    /**
     * 获取出生日期
     *
     * @return 出生日期
     */
    public Date getBirthday() {
        return birthday;
    }

    /**
     * 设置籍贯
     *
     * @param nativePlace 籍贯
     */
    public void setNativePlace(String nativePlace) {
        this.nativePlace = nativePlace;
    }

    /**
     * 获取籍贯
     *
     * @return 籍贯
     */
    public String getNativePlace() {
        return nativePlace;
    }

    /**
     * 设置职业
     *
     * @param occupation 职业
     */
    public void setOccupation(Integer occupation) {
        this.occupation = occupation;
    }

    /**
     * 获取职业
     *
     * @return 职业
     */
    public Integer getOccupation() {
        return occupation;
    }

    /**
     * 设置微信号
     *
     * @param wechartNo 微信号
     */
    public void setWechartNo(String wechartNo) {
        this.wechartNo = wechartNo;
    }

    /**
     * 获取微信号
     *
     * @return 微信号
     */
    public String getWechartNo() {
        return wechartNo;
    }

    /**
     * 获取用户介绍
     *
     * @return 用户介绍
     */
    public String getUserIntroduction() {
        return userIntroduction;
    }

    /**
     * 设置用户介绍
     *
     * @param userIntroduction 用户介绍
     */
    public void setUserIntroduction(String userIntroduction) {
        this.userIntroduction = userIntroduction;
    }

    /**
     * 设置用户标签
     *
     * @param userLabel 用户标签
     */
    public void setUserLabel(String userLabel) {
        if (!StringUtils.startsWith(userLabel, ",")) {
            userLabel = "," + userLabel;
        }

        if (!StringUtils.endsWith(userLabel, ",")) {
            userLabel = userLabel + ",";
        }
        this.userLabel = userLabel;
    }

    /**
     * 获取用户标签
     *
     * @return 用户标签
     */
    public String getUserLabel() {
        return userLabel;
    }

    /**
     * 设置用户头像Url
     *
     * @param headImage 用户头像Url
     */
    public void setHeadImage(String headImage) {
        this.headImage = headImage;
    }

    /**
     * 获取用户头像Url
     *
     * @return 用户头像Url
     */
    public String getHeadImage() {
        return headImage;
    }

    /**
     * 设置是否是收费拆解人
     *
     * @param isCharge 是否是收费拆解人
     */
    public void setIsCharge(Integer isCharge) {
        this.isCharge = isCharge;
    }

    /**
     * 获取是否是收费拆解人
     *
     * @return 是否是收费拆解人
     */
    public Integer getIsCharge() {
        return isCharge;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取创建时间
     *
     * @return 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取更新时间
     *
     * @return 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置状态：0默认，1管理员删除，2用户删除
     *
     * @param dataStatus 状态：0默认，1管理员删除，2用户删除
     */
    public void setDataStatus(Integer dataStatus) {
        this.dataStatus = dataStatus;
    }
    
    /**
     * 获取状态：0默认，1管理员删除，2用户删除
     *
     * @return 状态：0默认，1管理员删除，2用户删除
     */
    public Integer getDataStatus() {
        return dataStatus;
    }

    /**
     * 检查字段长度是否超长，检查非空字段是否有值
     *
     * @return 检查提示信息，为null时表示检查通过
     */
    public String valid() {

        if (StringUtils.isNotBlank(userAccount) && userAccount.length() > 50) {
            return "用户帐号值超长，允许输入的最大长度为：50字符";
        }

        if (SensitiveWordUtils.isContaintSensitiveWord(userAccount, 1)) {
            return "用户帐号中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(userAccount, 1) + "，请检查后再保存";
        }

        if (StringUtils.isNotBlank(userName) && userName.length() > 100) {
            return "用户昵称值超长，允许输入的最大长度为：100字符";
        }

        if (SensitiveWordUtils.isContaintSensitiveWord(userName, 1)) {
            return "用户昵称中包含敏感词汇:" + SensitiveWordUtils.getSensitiveWord(userName, 1) + "，请检查后再保存";
        }

        if (StringUtils.isNotBlank(email) && email.length() > 50) {
            return "用户邮箱值超长，允许输入的最大长度为：50字符";
        }

        if (StringUtils.isNotBlank(name) && name.length() > 50) {
            return "姓名值超长，允许输入的最大长度为：50字符";
        }

        if (StringUtils.isNotBlank(nativePlace) && nativePlace.length() > 100) {
            return "籍贯值超长，允许输入的最大长度为：100字符";
        }

        if (StringUtils.isBlank(userAccount)) {
            return "用户帐号不能为空";
        }

        if (StringUtils.isBlank(userPassword)) {
            return "用户密码不能为空";
        }

        if (StringUtils.isBlank(userName)) {
            return "用户昵称不能为空";
        }

        return null;
    }
}
